package br.edu.catolica.sadbc.entity;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Transient;

import org.hibernate.validator.Range;
import org.jboss.seam.annotations.Name;

import br.edu.catolica.sadbc.core.entity.AbstractEntity;
import br.edu.catolica.sadbc.entity.enums.Semestre;

@Entity
@Name(value = "atividadeDocente")
public class AtividadeDocente extends AbstractEntity {

	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	@Column(name = "id_atividadeDocente")
	private Long id;

	@ManyToOne(targetEntity = Atividade.class, fetch = FetchType.LAZY)
	@JoinColumn(name = "id_atividade")
	private Atividade atividade = new Atividade();

	@ManyToOne(targetEntity = Docente.class, fetch = FetchType.LAZY)
	@JoinColumn(name = "docente_id_pessoa")
	private Docente docente = new Docente();

	@Range(min = 1970, max = 2099, message = "Ano inválido.")
	private Integer ano;

	private Integer semestre;

	private Integer quantidade;
	
	public AtividadeDocente() {

	}

	@Override
	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public Atividade getAtividade() {
		return atividade;
	}

	public void setAtividade(Atividade atividade) {
		this.atividade = atividade;
	}

	public Docente getDocente() {
		return docente;
	}

	public void setDocente(Docente docente) {
		this.docente = docente;
	}

	public Integer getAno() {
		return ano;
	}

	public void setAno(Integer ano) {
		this.ano = ano;
	}

	public Integer getSemestre() {
		return semestre;
	}

	public void setSemestre(Integer semestre) {
		this.semestre = semestre;
	}

	public Integer getQuantidade() {
		return quantidade;
	}

	public void setQuantidade(Integer quantidade) {
		this.quantidade = quantidade;
	}
	
	@Transient
	public String getSemestreDescription() {
		return Semestre.getEnumDescription(getSemestre());
	}

}
